package case1Base;

/**
 * @Author 朱志文
 * @Date 2021/12/1 16:05
 * @Version 1.0
 * @Content 方法的递归调用
 */
public class case19_RecursiveMethodCalls {
    public static void main(String[] args) {
        //自己调用自己的情况   利用递归调用可以解决一些重复且麻烦的问题
        /** 需要考虑的问题
         * 一定要设置方法递归用的结束条件
         * 每一次调用的过程中一定要修改传递的参数条件*/

        System.out.println(result(90));


    }
    //递归操作虽然可以简化调用，但是自己便携代码很少出现递归情况，大部分情况下考虑的都只是一些简单的处理逻辑
    //递归少调用 容易造成内存溢出
    public static double sum(int num){//执行累加
        if (num==1){
            return 1;
        }
        return num*sum(num-1);//执行递归累加

    }
    public static double result(int num){
        if (num==1){
            return 1;
        }
        return sum(num)+sum(num-1);
    }
    //有一部分递归可以使用循环来完成 不过有一部分递归使用比循环来更近的清楚
}
